export abstract class Shape {
    protected x: number;
    protected y: number;
    protected fillStyle: string;
    protected strokeStyle: string;
    protected lineWidth: number;

    constructor(x: number, y: number) {
        this.x = x;
        this.y = y;
        this.fillStyle = '#000000';
        this.strokeStyle = '#000000';
        this.lineWidth = 1;
    }

    abstract draw(ctx: CanvasRenderingContext2D): void;

    setFillStyle(color: string): this {
        this.fillStyle = color;
        return this;
    }

    setStrokeStyle(color: string): this {
        this.strokeStyle = color;
        return this;
    }

    setLineWidth(width: number): this {
        this.lineWidth = width;
        return this;
    }
} 